此文收集了当前的一些视频编辑平台术分享的一些技术文章,和OpenGL的一些学习资料,便于学习和借鉴。站在巨人的肩上可以看得更远。收集也是学习的一个阶段。
它山之石
小咖秀的视频处理
android平台短视频技术之 视频编辑的经验分享
性能比肩美拍秒拍的Android视频录制编辑特效解决方案
Android视频录制app解决方案汇总
短视频处理方案概述
FFmepg性能限制
可以攻玉
竞品分析
Top10 Android Video Editing Apps
Filmora
OpenGL
Android OpenGL
OpenGL canvas
Android弹幕-OpenGL
A real OpenGL ES 2.0 2D tutorial part
安卓OpenGL ES 2.0入门-1
安卓OpenGL ES 2.0入门-2
OpenGL学习文档
OpenGL ES Android lesson
OpenGL ES 学习笔记
OpenGL播放视频
学习OpenGL之类比画画
OpenGL ES 学习博客
OpenGL tutorial
Android OpenGL基础入门
GLSL语言
其他
直播
Android中直播视频技术探究之—-摄像头Camera视频源数据采集解析
Android中直播视频技术探究之–基础知识
Android中直播视频技术探究之–ByteBuffer解析
Android平台美颜相机/Camera实时滤镜/视频编解码/影像后期/人脸技术探索——系统总体设计
Android平台美颜相机、实时滤镜、人脸技术探秘
Android中直播视频技术探究–基础知识大纲介绍
ffmpeg 命令
视频应用
OpenGL概述
StackOverFlow
display-two-videos-together-then-output-as-a-merged-video-on-a-single-screen
备忘
shader中的变量
uniform变量
uniform变量是外部application程序传递给(vertex和fragment)shader的变量。因此它是application通过函数glUniform**()函数赋值的。在(vertex和fragment)shader程序内部,uniform变量就像是C语言里面的常量(const ),它不能被shader程序修改(shader只能用,不能改)。
如果uniform变量在vertex和fragment两者之间声明方式完全一样,则它可以在vertex和fragment共享使用(相当于一个被vertex和fragment shader共享的全局变量)。
uniform变量一般用来表示:变换矩阵,材质,光照参数和颜色等信息。
以下是例子:
|
|
attribute变量
attribute变量是只能在vertex shader中使用的变量,它不能在fragment shader中声明attribute变量,也不能被fragment shader中使用。
一般用attribute变量来表示一些顶点的数据,如:顶点坐标,法线,纹理坐标,顶点颜色等。
在application中,一般用函数glBindAttribLocation()来绑定每个attribute变量的位置,然后用函数glVertexAttribPointer()为每个attribute变量赋值。
以下是例子:
|
|
varying变量
varying变量是vertex和fragment shader之间做数据传递用的。一般vertex shader修改varying变量的值,然后fragment shader使用该varying变量的值。因此varying变量在vertex和fragment shader二者之间的声明必须是一致的。application不能使用此变量。
例子:
|
|
顶点着色器
这个是告诉电脑如何打线稿的——如何处理顶点、法线等的数据的小程序。
顶点着色器必须对 gl_Position 赋值,OpenGL 会把这个值作为当前顶点的最终位置,并把这些顶点组装成点、直线和三角形。
片段着色器
这个是告诉电脑如何上色的——如何处理光、阴影、遮挡、环境等等对物体表面的影响,最终生成一副图像的小程序。
片段着色器必须对 gl_FragColor 进行赋值, OpenGL 会使用这个颜色作为当前片段的最终颜色。
光栅化Rasterize: 就是从矢量的点线面的描述,变成像素的描述。
在Android中Camera产生的preview texture是以一种特殊的格式传送的,因此shader里的纹理类型并不是普通的sampler2D,而是samplerExternalOES, 在shader的头部也必须声明OES的扩展「#extension GL_OES_EGL_image_external : require」。除此之外,external OES的纹理和Sampler2D在使用时没有差别。
采用了这两种着色器小程序 的 数据传输处理计算的渲染过程,称之为 可编程管线。